package br.ykhan.sql.sqandal.elements;

public class Table implements Element{

	private String name;
	private String alias;
	
	public Table(String name){
		this.name = name;
	}
	
	public Table(String name, String alias){
		this.name = name;
		this.alias = alias;
	}
	
	/**
	 * Retorna String com o nome da declaração da Tabela.<p>
	 * Exemplo:<br>
	 * <b>Pessoa as p</b>
	 */
	public String getDeclarationName(){
		
		StringBuffer str = new StringBuffer();
		
		str.append(name);
		
		if(alias != null && !alias.isEmpty()) str.append(" AS "+alias);
		
		return str.toString();
	}
	
	/**
	 * Retorna String com o nome de referência da Tabela.<p>
	 * Exemplo:<br>
	 * <b>Pessoa</b>
	 */
	public String getReferenceName(){
		StringBuffer str = new StringBuffer();
		
		if(alias != null && !alias.isEmpty())
			str.append(alias);
		else
			str.append(name);
		
		return str.toString();
	}
	
	@Override
	public boolean equals(Object obj){
		if(!(obj instanceof Table)) return false;
		
		Table tab = (Table)obj;

		return this == tab || (
			this.name.equalsIgnoreCase(tab.getName()) && 
			this.alias.equalsIgnoreCase(tab.getAlias()));
	}

	public String getName() { return name; }
	public void setName(String name) { this.name = name; }
	
	public String getAlias() { return alias; }
	public void setAlias(String alias) { this.alias = alias; }
	
}

